Java switch()括号内参数的类型要求

您所在的位置:网站首页 java 尖括号里传的是什么 Java switch()括号内参数的类型要求

Java switch()括号内参数的类型要求

2024-06-09 14:01| 来源: 网络整理| 查看: 265

先声明一点,本人用的时jdk11,进行的探究。

先说结论:switch()的参数类型可以是:int,byte,short;String;char;enum

一般我们都是这么使用switch()的,一般括号内参数写的都是int型

public class Demo{ public static void main(String[] args){ int a = 1; switch(a){ case 1: System.out.println("我是1");break; case 2: System.out.println("我是2");break; } } } //毫无疑问,括号内是 int 数据,可以编译运行

在这里插入图片描述 那么,括号内可以是byte,short,long,float,double,char,String,boolean类型的数据吗?

先说一下结论:

byte,short,int 没问题long,float,double 会报错,但是可以再括号内将他们转化为 int ,就没问题了从jdk1.7开始,String 也可以char 也可以boolean会报错, 而且boolean是不能强制转换成int的

下面是对每个数据类型的探究:

byte

public class Demo{ public static void main(String[] args){ byte a = 1; switch(a){ case 1: System.out.println("我是1");break; case 2: System.out.println("我是2");break; } } } //括号内可以是 byte

在这里插入图片描述 short

public class Demo{ public static void main(String[] args){ short a = 1; switch(a){ case 1: System.out.println("我是1");break; case 2: System.out.println("我是2");break; } } } //括号内可以是 short

在这里插入图片描述 long

public class Demo{ public static void main(String[] args){ long a = 1; switch(a){ case 1: System.out.println("我是1");break; case 2: System.out.println("我是2");break; } } } //编译时报错了,说明 long 不行

而且从报错的说明可以看出,switch()括号内的参数要是int型,

而上面的 short,byte,之所以也行,是因为它们在括号内完成了基本数据类型的自动转换,自动转换成int了 在这里插入图片描述 再对 long 探究一下,我在括号内把long强制转换成int,看看行不行:

public class Demo{ public static void main(String[] args){ long a = 1; switch((int)a){ case 1: System.out.println("我是1");break; case 2: System.out.println("我是2");break; } } } //编译运行都成功了

在这里插入图片描述 float

public class Demo{ public static void main(String[] args){ float a = 1; switch(a){ case 1.0: System.out.println("我是1.0");break; case 2.0: System.out.println("我是2.0");break; } } }

报错情况和 long 差不多 在这里插入图片描述 double

public class Demo{ public static void main(String[] args){ double a = 1; switch(a){ case 1.0: System.out.println("我是1.0");break; case 2.0: System.out.println("我是2.0");break; } } }

情况也和 long,float 的差不多 在这里插入图片描述

String

public class Demo{ public static void main(String[] args){ String a = "1"; switch(a){ case "1": System.out.println("我是1");break; case "2": System.out.println("我是2");break; } } } //String 可以

在这里插入图片描述

char

public class Demo{ public static void main(String[] args){ char a = 'a'; switch(a){ case 'a': System.out.println("我是a");break; case 'b': System.out.println("我是b");break; } } } // char 也行

在这里插入图片描述

boolean

public class Demo{ public static void main(String[] args){ boolean a = true; switch(a){ case true: System.out.println("我是true");break; case false: System.out.println("我是false");break; } } } //boolean 不行,而且boolean是不能强制转换成int的

在这里插入图片描述

枚举类型enum 经过评论区ycxy_ZHT的补充:enum类型也是可以的



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3